package leetcode;

public class ReverseInteger {

	public static void main(String[] args) {
		ReverseInteger object = new ReverseInteger();
		System.out.println(object.reverse(-214));
	}
	
	public int reverse(int x) {
        boolean isPositive = (x >= 0);
        System.out.println(isPositive);
        int[] numbers = new int[32];
        //因为只有这个特列，所以要返回
        if(x == Integer.MIN_VALUE){
        	return 0;
        }
        x = isPositive ? x : -x;
        int res = 0;
        int index = 0;
        int length = 0;	//记录一共有多少位数
        while(x != 0){
            //数组中的第0位存储最低位的数据
            numbers[index++] = x % 10;
            x /= 10;
            length++;
        }
        //用来判断是否溢出的情况
        int maxValue = Integer.MAX_VALUE / 10;
        int maxMod = Integer.MAX_VALUE % 10;
        for(int i = 0; i < length; i++){
        	
        	//由于这里使用大于maxValue的条件来判断是否会溢出，所以需要将负数转为正数
            if(res > maxValue || (res == maxValue && numbers[i] > maxMod) ){
                return 0;
            }
            res = res * 10 + numbers[i];
            System.out.println("res:" +  res);
        }
        return isPositive ? res : -res;
    }
}
